package store.lunangangster.engine.impl.entity.mgr;

import java.util.Map;
import store.lunangangster.engine.impl.entity.VariableEntity;

public interface VariableScope {

  /**
   * 该方法会获取父类、当前类、以及用户刚设置的Variables。每次调用都会重新获取
   * @return 父类、当前类、以及用户刚设置的Variables
   */
  Map<String, VariableEntity> getVariableEntities();

  /**
   * 根据variableName获取当前对象所在域中的Variable
   * @param variableName  变量名
   * @return  Variable
   */
  VariableEntity getVariableEntity(String variableName);

  /**
   * 根据VariableName获取当前对象所在域中的Variable.value
   * @param variableName  变量名
   * @return  Variable
   */
  Object getVariable(String variableName);

  Map<String, Object> getVariables();

  void setVariable(String variableName, Object value);

  void setVariables(Map<String, Object> variables);

  void setLocalVariable(String variableName, Object value);

  void setLocalVariables(Map<String, Object> variables);
}
